#ifndef _RING_BUF_H_
#define _RING_BUF_H_

#include <stdint.h>

/* 缓冲数据帧数 */
#define NUM_RING_BUF_FRAMES	6       //环形缓冲器缓冲多少帧数据

typedef struct ring_buffer{
	int16_t *buffer;      		/* 指向环形缓冲的起始位置 */
	int16_t *start;	   		/* 指向起始的buffer位置 */
	uint32_t len_start_to_end;      /* 从star到buffer末尾的帧数 */
}RING_BUF;

#ifdef __cplusplus
extern    "C"
{
#endif
/*
 * @brief 初始化环形缓冲结构体，为缓冲分配内存
 * @param ring_buf_str， 环形缓冲结构体
 * @return -1；初始化失败；0初始化成功。
 */
int32_t ring_buf_init(RING_BUF *ring_buf_str);
/*
 * @brief 更新一帧环形缓冲
 * @param ring_buf_str， 环形缓冲结构体
 * @param data_buf， 要插入缓冲器的数据指针
 */
void ring_buf_input(RING_BUF *ring_buf_str, int16_t *data_buf);
/*
 * @brief 将缓冲器中的数据全部输出到指定存储位置
 * @param ring_buf_str， 环形缓冲结构体
 * @param data_buf， 输出数据的地址
 */
void ring_buf_output(RING_BUF *ring_buf_str, int16_t *data_buf);

#ifdef __cplusplus
}
#endif

#endif
